// <!-- 同步任务，异步任务（宏任务、微任务） -->
//     <!-- 微任务：promise.then，process.nextTick,MutationObserver -->
//     <!-- 宏任务队列：ajax,setTimeout,setInterval -->
//     <!-- 主线程：确定当前要执行执行栈中的那个代码块 -->
//     <!-- 执行栈： -->
//     <!-- 任务队列：将异步任务放在任务队列中，任务队列具体又细分宏任务队列与微任务队列 -->
//     <!-- 事件循环机制步骤如下：(1)浏览器通篇扫描，分析语法，并检测是否有语法错误
//                         (2)将同步代码放在主线程中，将微任务放在任务队列的微任务队列，将宏任务放在任务队列的宏任务对列中
//                         (3)执行主线程中的同步代码，待主线程中的同步代码执行完成后，轮询任务队列中是否还有未执行的代码
//                         (4)优先执行微任务中的异步任务，待微任务中的异步任务全部执行完成后，执行宏任务中的异步代码
//                         (5)轮询微队列中是否有没有执行的代码，有，则执行微任务中的异步代码，待微队列中的代码全部执行完成后，在执行下一个宏任务中的异步代码
//                         (6)循环步骤(4)(5)
//                         (7)一旦宏任务中的代码全部都执行完成，即结束轮询 -->